package com.yxw.yxnet_cd_center.customer_service.service;

import com.yxw.yxnet_cd_center.customer_service.dto.PostDTO;
import com.yxw.yxnet_cd_center.customer_service.dto.PostQueryDTO;
import com.yxw.yxnet_cd_center.common.dto.PageVO;
import com.yxw.yxnet_cd_center.customer_service.vo.PostVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 岗位管理Service接口
 *
 * @author xiexuxin
 * @date 2023-09-17
 */
public interface IPostService {

    /**
     * 添加岗位
     * @param postDTO
     */
    void addPost(PostDTO postDTO);

    /**
     * 根据Id删除岗位
     * @param postId
     */
    void deletePostById(Long postId);

    /**
     * 根据id批量删除岗位
     * @param postIds
     */
    void deleteByPostIds(@Param("postIds") List<Long> postIds);

    /**
     * 更新岗位
     * @param postDTO
     */
    void updatePost(Long postId,PostDTO postDTO);

    /**
     * 统计匹配名称查到匹配ID的岗位数量，用于修改数据时判断名称是否被占用
     *
     * @param postId   岗位ID
     * @param postName 岗位名称
     * @return 匹配的岗位的数量
     */
    int countByNameAndNotId(Long postId, String postName);

    /**
     * 根据Id查询岗位
     * @param postId
     * @return
     */
    PostVO selectPostById(Long postId);

    /**
     * 根据部门查询岗位
     * @param deptId
     * @return
     */
    List<PostVO> getPostByDept(Long deptId);

    /**
     * 岗位列表条件查询
     * @param postQueryDTO
     * @return
     */
    PageVO<PostVO> getPostList(PostQueryDTO postQueryDTO);

    /**
     * 查询岗位列表
     * @return
     */
    List<PostVO> postList();
}
